From 9fc6a1eb57548268fd04f7776ebf9c09d2a6372c Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 25 Jan 2024 17:46:37 +0100 Subject: [PATCH] Fixed wrong position of today indicator in meetings list --- .../fragment/AbstractNewTransferCallFragment.kt | 2 +- .../main/fragment/GenericAddressPickerFragment.kt | 2 +- .../adapter/ContactsAndSuggestionsListAdapter.kt | 9 ++++----- .../ui/main/history/adapter/HistoryListAdapter.kt | 2 +- .../linphone/ui/main/history/model/CallLogModel.kt | 1 - .../main/meetings/fragment/MeetingsListFragment.kt | 4 ++-- .../linphone/utils/RecyclerViewHeaderDecoration.kt | 2 +- .../main/java/org/linphone/utils/TimestampUtils.kt | 14 +++++++++++--- .../main/res/layout/meetings_list_decoration.xml | 8 +++----- 9 files changed, 24 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt index 3f3f5940c..35ad90e08 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt @@ -116,7 +116,7 @@ abstract class AbstractNewTransferCallFragment : GenericCallFragment() { binding.contactsAndSuggestionsList.setHasFixedSize(true) - val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter, true) + val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter) binding.contactsAndSuggestionsList.addItemDecoration(headerItemDecoration) adapter.contactClickedEvent.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt index d22b809bc..4b0fd4211 100644 --- a/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt @@ -115,7 +115,7 @@ abstract class GenericAddressPickerFragment : GenericFragment() { recyclerView.setHasFixedSize(true) recyclerView.layoutManager = LinearLayoutManager(requireContext()) - val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter, true) + val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter) recyclerView.addItemDecoration(headerItemDecoration) } diff --git a/app/src/main/java/org/linphone/ui/main/history/adapter/ContactsAndSuggestionsListAdapter.kt b/app/src/main/java/org/linphone/ui/main/history/adapter/ContactsAndSuggestionsListAdapter.kt index e73bfc516..d84fcd410 100644 --- a/app/src/main/java/org/linphone/ui/main/history/adapter/ContactsAndSuggestionsListAdapter.kt +++ b/app/src/main/java/org/linphone/ui/main/history/adapter/ContactsAndSuggestionsListAdapter.kt @@ -36,13 +36,12 @@ class ContactsAndSuggestionsListAdapter : override fun displayHeaderForPosition(position: Int): Boolean { val model = getItem(position) - if (model.friend == null) { - if (position == 0) { - return true - } + if (position == 0) { + return true + } else if (model.friend == null) { val previousModel = getItem(position - 1) return previousModel.friend != null - } else if (position == 0) return true + } return false } diff --git a/app/src/main/java/org/linphone/ui/main/history/adapter/HistoryListAdapter.kt b/app/src/main/java/org/linphone/ui/main/history/adapter/HistoryListAdapter.kt index 003832814..b57e0bf53 100644 --- a/app/src/main/java/org/linphone/ui/main/history/adapter/HistoryListAdapter.kt +++ b/app/src/main/java/org/linphone/ui/main/history/adapter/HistoryListAdapter.kt @@ -88,7 +88,7 @@ class HistoryListAdapter : ListAdapter(Ca } override fun areContentsTheSame(oldItem: CallLogModel, newItem: CallLogModel): Boolean { - return oldItem.avatarModel.id == newItem.avatarModel.id && oldItem.iconResId.value == newItem.iconResId.value + return oldItem.avatarModel.id == newItem.avatarModel.id && oldItem.iconResId == newItem.iconResId } } } diff --git a/app/src/main/java/org/linphone/ui/main/history/model/CallLogModel.kt b/app/src/main/java/org/linphone/ui/main/history/model/CallLogModel.kt index e766cfc5e..0e5a59dd4 100644 --- a/app/src/main/java/org/linphone/ui/main/history/model/CallLogModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/model/CallLogModel.kt @@ -3,7 +3,6 @@ package org.linphone.ui.main.history.model import androidx.annotation.IntegerRes import androidx.annotation.UiThread import androidx.annotation.WorkerThread -import androidx.lifecycle.MutableLiveData import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.core.Call.Dir diff --git a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt index 777bbbd14..c2cf19cfc 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt @@ -97,9 +97,9 @@ class MeetingsListFragment : AbstractTopBarFragment() { binding.viewModel = listViewModel binding.meetingsList.setHasFixedSize(true) - val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter, true) - binding.meetingsList.addItemDecoration(headerItemDecoration) binding.meetingsList.layoutManager = LinearLayoutManager(requireContext()) + val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter) + binding.meetingsList.addItemDecoration(headerItemDecoration) binding.setNewMeetingClicked { if (findNavController().currentDestination?.id == R.id.meetingsListFragment) { diff --git a/app/src/main/java/org/linphone/utils/RecyclerViewHeaderDecoration.kt b/app/src/main/java/org/linphone/utils/RecyclerViewHeaderDecoration.kt index 1f98a4879..f1ac29ffe 100644 --- a/app/src/main/java/org/linphone/utils/RecyclerViewHeaderDecoration.kt +++ b/app/src/main/java/org/linphone/utils/RecyclerViewHeaderDecoration.kt @@ -30,7 +30,7 @@ import androidx.recyclerview.widget.RecyclerView class RecyclerViewHeaderDecoration( private val context: Context, private val adapter: HeaderAdapter, - private val sticky: Boolean = false + private val sticky: Boolean = true ) : RecyclerView.ItemDecoration() { private val headers: SparseArray = SparseArray() diff --git a/app/src/main/java/org/linphone/utils/TimestampUtils.kt b/app/src/main/java/org/linphone/utils/TimestampUtils.kt index 8700652ab..02fcbe9cd 100644 --- a/app/src/main/java/org/linphone/utils/TimestampUtils.kt +++ b/app/src/main/java/org/linphone/utils/TimestampUtils.kt @@ -47,9 +47,17 @@ class TimestampUtils { cal.timeInMillis = if (timestampInSecs) timestamp * 1000 else timestamp val tomorrow = Calendar.getInstance() - return cal[Calendar.ERA] >= tomorrow[Calendar.ERA] && - cal[Calendar.YEAR] >= tomorrow[Calendar.YEAR] && - cal[Calendar.DAY_OF_YEAR] >= tomorrow[Calendar.DAY_OF_YEAR] + tomorrow.timeInMillis = System.currentTimeMillis() + + if (cal.get(Calendar.ERA) > tomorrow.get(Calendar.ERA)) return true + if (cal.get(Calendar.ERA) == tomorrow.get(Calendar.ERA) && + cal.get(Calendar.YEAR) > tomorrow.get(Calendar.YEAR) + ) { + return true + } + return cal.get(Calendar.ERA) == tomorrow.get(Calendar.ERA) && + cal.get(Calendar.YEAR) == tomorrow.get(Calendar.YEAR) && + cal.get(Calendar.DAY_OF_YEAR) >= tomorrow.get(Calendar.DAY_OF_YEAR) } @AnyThread diff --git a/app/src/main/res/layout/meetings_list_decoration.xml b/app/src/main/res/layout/meetings_list_decoration.xml index 2a18742df..4b9aa7512 100644 --- a/app/src/main/res/layout/meetings_list_decoration.xml +++ b/app/src/main/res/layout/meetings_list_decoration.xml @@ -7,18 +7,16 @@