mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 11:28:06 +00:00
Fluidify navigation if SDK is under burst
This commit is contained in:
parent
ace9e02133
commit
7f1dc95cfc
16 changed files with 111 additions and 59 deletions
|
|
@ -26,7 +26,6 @@ import android.view.ViewGroup
|
|||
import android.view.animation.Animation
|
||||
import android.view.animation.AnimationUtils
|
||||
import androidx.annotation.UiThread
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
|
@ -111,7 +110,6 @@ class ConversationsListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
postponeEnterTransition()
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
listViewModel = ViewModelProvider(this)[ConversationsListViewModel::class.java]
|
||||
|
|
@ -184,10 +182,7 @@ class ConversationsListFragment : AbstractTopBarFragment() {
|
|||
listViewModel.conversations.observe(viewLifecycleOwner) {
|
||||
adapter.submitList(it)
|
||||
Log.i("$TAG Conversations list ready with [${it.size}] items")
|
||||
|
||||
(view.parent as? ViewGroup)?.doOnPreDraw {
|
||||
startPostponedEnterTransition()
|
||||
}
|
||||
listViewModel.fetchInProgress.value = false
|
||||
}
|
||||
|
||||
sharedViewModel.showConversationEvent.observe(viewLifecycleOwner) {
|
||||
|
|
|
|||
|
|
@ -105,6 +105,8 @@ class ConversationsListViewModel @UiThread constructor() : AbstractTopBarViewMod
|
|||
}
|
||||
|
||||
init {
|
||||
fetchInProgress.value = true
|
||||
|
||||
coreContext.postOnCoreThread { core ->
|
||||
coreContext.contactsManager.addListener(contactsListener)
|
||||
core.addListener(coreListener)
|
||||
|
|
@ -179,12 +181,10 @@ class ConversationsListViewModel @UiThread constructor() : AbstractTopBarViewMod
|
|||
|
||||
if (count == 15) {
|
||||
conversations.postValue(list)
|
||||
fetchInProgress.postValue(false)
|
||||
}
|
||||
}
|
||||
|
||||
conversations.postValue(list)
|
||||
fetchInProgress.postValue(false)
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ import android.view.animation.AnimationUtils
|
|||
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.navigation.findNavController
|
||||
|
|
@ -97,7 +96,6 @@ class ContactsListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
postponeEnterTransition()
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
listViewModel = ViewModelProvider(this)[ContactsListViewModel::class.java]
|
||||
|
|
@ -128,10 +126,7 @@ class ContactsListFragment : AbstractTopBarFragment() {
|
|||
) {
|
||||
adapter.submitList(it)
|
||||
Log.i("$TAG Contacts list updated with [${it.size}] items")
|
||||
|
||||
(view.parent as? ViewGroup)?.doOnPreDraw {
|
||||
startPostponedEnterTransition()
|
||||
}
|
||||
listViewModel.fetchInProgress.value = false
|
||||
}
|
||||
|
||||
listViewModel.favourites.observe(
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel()
|
|||
}
|
||||
|
||||
init {
|
||||
fetchInProgress.value = true
|
||||
showFavourites.value = true
|
||||
|
||||
coreContext.postOnCoreThread { core ->
|
||||
|
|
@ -259,7 +260,6 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel()
|
|||
|
||||
if (firstLoad && count == 20) {
|
||||
contactsList.postValue(list)
|
||||
fetchInProgress.postValue(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -273,7 +273,6 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel()
|
|||
|
||||
favourites.postValue(favouritesList)
|
||||
contactsList.postValue(list)
|
||||
fetchInProgress.postValue(false)
|
||||
|
||||
Log.i("$TAG Processed [${results.size}] results")
|
||||
firstLoad = false
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ import android.view.animation.Animation
|
|||
import android.view.animation.AnimationUtils
|
||||
import android.widget.PopupWindow
|
||||
import androidx.annotation.UiThread
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.findNavController
|
||||
|
|
@ -98,7 +97,6 @@ class HistoryListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
postponeEnterTransition()
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
listViewModel = ViewModelProvider(this)[HistoryListViewModel::class.java]
|
||||
|
|
@ -194,10 +192,7 @@ class HistoryListFragment : AbstractTopBarFragment() {
|
|||
listViewModel.callLogs.observe(viewLifecycleOwner) {
|
||||
adapter.submitList(it)
|
||||
Log.i("$TAG Call logs ready with [${it.size}] items")
|
||||
|
||||
(view.parent as? ViewGroup)?.doOnPreDraw {
|
||||
startPostponedEnterTransition()
|
||||
}
|
||||
listViewModel.fetchInProgress.value = false
|
||||
}
|
||||
|
||||
listViewModel.historyDeletedEvent.observe(viewLifecycleOwner) {
|
||||
|
|
|
|||
|
|
@ -61,6 +61,8 @@ class HistoryListViewModel @UiThread constructor() : AbstractTopBarViewModel() {
|
|||
}
|
||||
|
||||
init {
|
||||
fetchInProgress.value = true
|
||||
|
||||
coreContext.postOnCoreThread { core ->
|
||||
coreContext.contactsManager.addListener(contactsListener)
|
||||
core.addListener(coreListener)
|
||||
|
|
@ -123,11 +125,9 @@ class HistoryListViewModel @UiThread constructor() : AbstractTopBarViewModel() {
|
|||
|
||||
if (count == 20) {
|
||||
callLogs.postValue(list)
|
||||
fetchInProgress.postValue(false)
|
||||
}
|
||||
}
|
||||
|
||||
callLogs.postValue(list)
|
||||
fetchInProgress.postValue(false)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,7 +92,6 @@ class MeetingsListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
postponeEnterTransition()
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
listViewModel = ViewModelProvider(this)[MeetingsListViewModel::class.java]
|
||||
|
|
@ -137,10 +136,9 @@ class MeetingsListFragment : AbstractTopBarFragment() {
|
|||
val newCount = it.size
|
||||
adapter.submitList(it)
|
||||
Log.i("$TAG Meetings list ready with [$newCount] items")
|
||||
listViewModel.fetchInProgress.value = false
|
||||
|
||||
(view.parent as? ViewGroup)?.doOnPreDraw {
|
||||
startPostponedEnterTransition()
|
||||
|
||||
if (currentCount < newCount) {
|
||||
scrollToToday()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ class MeetingsListViewModel @UiThread constructor() : AbstractTopBarViewModel()
|
|||
}
|
||||
|
||||
init {
|
||||
fetchInProgress.value = true
|
||||
|
||||
coreContext.postOnCoreThread { core ->
|
||||
core.addListener(coreListener)
|
||||
|
||||
|
|
@ -74,6 +76,10 @@ class MeetingsListViewModel @UiThread constructor() : AbstractTopBarViewModel()
|
|||
|
||||
@WorkerThread
|
||||
private fun computeMeetingsList(filter: String) {
|
||||
if (meetings.value.orEmpty().isEmpty()) {
|
||||
fetchInProgress.postValue(true)
|
||||
}
|
||||
|
||||
val list = arrayListOf<MeetingListItemModel>()
|
||||
|
||||
var source = coreContext.core.defaultAccount?.conferenceInformationList
|
||||
|
|
|
|||
|
|
@ -98,6 +98,18 @@
|
|||
android:layout_marginTop="@dimen/top_bar_height"
|
||||
android:layout_marginStart="@dimen/landscape_nav_bar_width" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/fetch_in_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:visibility="@{viewModel.fetchInProgress ? View.VISIBLE : View.GONE}"
|
||||
app:indicatorColor="@color/main1_500"
|
||||
app:layout_constraintStart_toEndOf="@id/bottom_nav_bar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/new_conversation"
|
||||
android:onClick="@{onNewConversationClicked}"
|
||||
|
|
@ -114,10 +126,6 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!--<include
|
||||
layout="@layout/operation_in_progress"
|
||||
bind:visibility="@{viewModel.fetchInProgress}" />-->
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
|
|
|
|||
|
|
@ -146,6 +146,18 @@
|
|||
app:layout_constraintStart_toEndOf="@id/bottom_nav_bar"
|
||||
app:layout_constraintTop_toBottomOf="@id/no_contacts_image" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/fetch_in_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:visibility="@{viewModel.fetchInProgress ? View.VISIBLE : View.GONE}"
|
||||
app:indicatorColor="@color/main1_500"
|
||||
app:layout_constraintStart_toEndOf="@id/bottom_nav_bar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/new_contact"
|
||||
android:onClick="@{onNewContactClicked}"
|
||||
|
|
@ -162,10 +174,6 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!--<include
|
||||
layout="@layout/operation_in_progress"
|
||||
bind:visibility="@{viewModel.fetchInProgress}" />-->
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
|
|
|
|||
|
|
@ -117,6 +117,18 @@
|
|||
android:layout_marginTop="@dimen/top_bar_height"
|
||||
android:layout_marginStart="@dimen/landscape_nav_bar_width" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/fetch_in_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:visibility="@{viewModel.fetchInProgress ? View.VISIBLE : View.GONE}"
|
||||
app:indicatorColor="@color/main1_500"
|
||||
app:layout_constraintStart_toEndOf="@id/bottom_nav_bar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:onClick="@{startCallClickListener}"
|
||||
android:id="@+id/new_call"
|
||||
|
|
@ -133,10 +145,6 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<include
|
||||
layout="@layout/operation_in_progress"
|
||||
bind:visibility="@{viewModel.fetchInProgress}" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
|
|
|
|||
|
|
@ -114,6 +114,18 @@
|
|||
android:layout_marginTop="@dimen/top_bar_height"
|
||||
android:layout_marginStart="@dimen/landscape_nav_bar_width" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/fetch_in_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:visibility="@{viewModel.fetchInProgress ? View.VISIBLE : View.GONE}"
|
||||
app:indicatorColor="@color/main1_500"
|
||||
app:layout_constraintStart_toEndOf="@id/bottom_nav_bar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/new_meeting"
|
||||
android:onClick="@{newMeetingClicked}"
|
||||
|
|
@ -130,10 +142,6 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!--<include
|
||||
layout="@layout/operation_in_progress"
|
||||
bind:visibility="@{viewModel.fetchInProgress}" />-->
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
|
|
|
|||
|
|
@ -89,6 +89,18 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/fetch_in_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:visibility="@{viewModel.fetchInProgress ? View.VISIBLE : View.GONE}"
|
||||
app:indicatorColor="@color/main1_500"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar" />
|
||||
|
||||
<include
|
||||
android:id="@+id/bottom_nav_bar"
|
||||
android:layout_width="0dp"
|
||||
|
|
@ -115,10 +127,6 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!--<include
|
||||
layout="@layout/operation_in_progress"
|
||||
bind:visibility="@{viewModel.fetchInProgress}" />-->
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
|
|
|
|||
|
|
@ -138,6 +138,18 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/no_contacts_image" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/fetch_in_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:visibility="@{viewModel.fetchInProgress ? View.VISIBLE : View.GONE}"
|
||||
app:indicatorColor="@color/main1_500"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar" />
|
||||
|
||||
<include
|
||||
android:id="@+id/bottom_nav_bar"
|
||||
android:layout_width="0dp"
|
||||
|
|
@ -164,10 +176,6 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!--<include
|
||||
layout="@layout/operation_in_progress"
|
||||
bind:visibility="@{viewModel.fetchInProgress}" />-->
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
|
|
|
|||
|
|
@ -108,6 +108,18 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/fetch_in_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:visibility="@{viewModel.fetchInProgress ? View.VISIBLE : View.GONE}"
|
||||
app:indicatorColor="@color/main1_500"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar" />
|
||||
|
||||
<include
|
||||
android:id="@+id/bottom_nav_bar"
|
||||
android:layout_width="0dp"
|
||||
|
|
@ -134,10 +146,6 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!--<include
|
||||
layout="@layout/operation_in_progress"
|
||||
bind:visibility="@{viewModel.fetchInProgress}" />-->
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
|
|
|
|||
|
|
@ -105,6 +105,18 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/fetch_in_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:visibility="@{viewModel.fetchInProgress ? View.VISIBLE : View.GONE}"
|
||||
app:indicatorColor="@color/main1_500"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar" />
|
||||
|
||||
<include
|
||||
android:id="@+id/bottom_nav_bar"
|
||||
android:layout_width="0dp"
|
||||
|
|
@ -131,10 +143,6 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!--<include
|
||||
layout="@layout/operation_in_progress"
|
||||
bind:visibility="@{viewModel.fetchInProgress}" />-->
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue