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