mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-24 02:39:55 +01:00
Fix clear filter position.
This commit is contained in:
committed by
Cody Henthorne
parent
be02c1bc0a
commit
dce883bcf5
@@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.database.MessageTypes
|
||||
import org.thoughtcrime.securesms.databinding.CallLogAdapterItemBinding
|
||||
import org.thoughtcrime.securesms.databinding.CallLogCreateCallLinkItemBinding
|
||||
import org.thoughtcrime.securesms.databinding.ConversationListItemClearFilterBinding
|
||||
import org.thoughtcrime.securesms.databinding.ConversationListItemClearFilterEmptyBinding
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.util.DateUtils
|
||||
@@ -61,6 +62,13 @@ class CallLogAdapter(
|
||||
inflater = ConversationListItemClearFilterBinding::inflate
|
||||
)
|
||||
)
|
||||
registerFactory(
|
||||
ClearFilterEmptyModel::class.java,
|
||||
BindingFactory(
|
||||
creator = { ClearFilterEmptyViewHolder(it, callbacks::onClearFilterClicked) },
|
||||
inflater = ConversationListItemClearFilterEmptyBinding::inflate
|
||||
)
|
||||
)
|
||||
registerFactory(
|
||||
CreateCallLinkModel::class.java,
|
||||
BindingFactory(
|
||||
@@ -68,7 +76,6 @@ class CallLogAdapter(
|
||||
inflater = CallLogCreateCallLinkItemBinding::inflate
|
||||
)
|
||||
)
|
||||
|
||||
registerFactory(
|
||||
CallLinkModel::class.java,
|
||||
BindingFactory(
|
||||
@@ -95,6 +102,7 @@ class CallLogAdapter(
|
||||
is CallLogRow.Call -> CallModel(it, selectionState, itemCount, it.peer.id == localCallRecipientId)
|
||||
is CallLogRow.CallLink -> CallLinkModel(it, selectionState, itemCount, it.recipient.id == localCallRecipientId)
|
||||
is CallLogRow.ClearFilter -> ClearFilterModel()
|
||||
is CallLogRow.ClearFilterEmpty -> ClearFilterEmptyModel()
|
||||
is CallLogRow.CreateCallLink -> CreateCallLinkModel()
|
||||
}
|
||||
}
|
||||
@@ -178,6 +186,11 @@ class CallLogAdapter(
|
||||
override fun areContentsTheSame(newItem: ClearFilterModel): Boolean = true
|
||||
}
|
||||
|
||||
private class ClearFilterEmptyModel : MappingModel<ClearFilterEmptyModel> {
|
||||
override fun areItemsTheSame(newItem: ClearFilterEmptyModel): Boolean = true
|
||||
override fun areContentsTheSame(newItem: ClearFilterEmptyModel): Boolean = true
|
||||
}
|
||||
|
||||
private class CreateCallLinkModel : MappingModel<CreateCallLinkModel> {
|
||||
override fun areItemsTheSame(newItem: CreateCallLinkModel): Boolean = true
|
||||
|
||||
@@ -463,6 +476,19 @@ class CallLogAdapter(
|
||||
override fun bind(model: ClearFilterModel) = Unit
|
||||
}
|
||||
|
||||
private class ClearFilterEmptyViewHolder(
|
||||
binding: ConversationListItemClearFilterEmptyBinding,
|
||||
onClearFilterClicked: () -> Unit
|
||||
) : BindingViewHolder<ClearFilterEmptyModel, ConversationListItemClearFilterEmptyBinding>(binding) {
|
||||
|
||||
init {
|
||||
binding.clearFilter.setOnClickListener { onClearFilterClicked() }
|
||||
binding.clearFilterTitle.setText(R.string.CallLogAdapter__no_missed_calls)
|
||||
}
|
||||
|
||||
override fun bind(model: ClearFilterEmptyModel) = Unit
|
||||
}
|
||||
|
||||
private class CreateCallLinkViewHolder(
|
||||
binding: CallLogCreateCallLinkItemBinding,
|
||||
onClick: () -> Unit
|
||||
|
||||
@@ -82,7 +82,11 @@ class CallLogPagedDataSource(
|
||||
stopwatch.split("calls")
|
||||
|
||||
if (hasFilter && start <= clearFilterStart && remaining > 0) {
|
||||
callLogRows.add(CallLogRow.ClearFilter)
|
||||
if (callLogRows.isNotEmpty()) {
|
||||
callLogRows.add(CallLogRow.ClearFilter)
|
||||
} else {
|
||||
callLogRows.add(CallLogRow.ClearFilterEmpty)
|
||||
}
|
||||
}
|
||||
|
||||
repository.onCallTabPageLoaded(callLogRows)
|
||||
|
||||
@@ -52,6 +52,10 @@ sealed class CallLogRow {
|
||||
override val id: Id = Id.ClearFilter
|
||||
}
|
||||
|
||||
data object ClearFilterEmpty : CallLogRow() {
|
||||
override val id: Id = Id.ClearFilterEmpty
|
||||
}
|
||||
|
||||
data object CreateCallLink : CallLogRow() {
|
||||
override val id: Id = Id.CreateCallLink
|
||||
}
|
||||
@@ -60,6 +64,7 @@ sealed class CallLogRow {
|
||||
data class Call(val children: Set<Long>) : Id()
|
||||
data class CallLink(val roomId: CallLinkRoomId) : Id()
|
||||
data object ClearFilter : Id()
|
||||
data object ClearFilterEmpty : Id()
|
||||
data object CreateCallLink : Id()
|
||||
}
|
||||
|
||||
|
||||
@@ -129,6 +129,8 @@ class ConversationListAdapter extends ListAdapter<Conversation, RecyclerView.Vie
|
||||
return new ClearFilterViewHolder(v, onClearFilterClicked);
|
||||
} else if (viewType == TYPE_CLEAR_FILTER_EMPTY) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.conversation_list_item_clear_filter_empty, parent, false);
|
||||
TextView title = v.findViewById(R.id.clear_filter_title);
|
||||
title.setText(R.string.ConversationListFragment__no_unread_chats);
|
||||
return new ClearFilterViewHolder(v, onClearFilterClicked);
|
||||
} else if (viewType == TYPE_CHAT_FOLDER_EMPTY) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.conversation_list_item_folder_empty, parent, false);
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/clear_filter_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/ConversationListFragment__no_unread_chats"
|
||||
android:textAppearance="@style/Signal.Text.BodyLarge"
|
||||
android:textColor="@color/signal_colorOnSurfaceVariant" />
|
||||
|
||||
|
||||
@@ -7405,6 +7405,8 @@
|
||||
<string name="CallLogAdapter__start_a_video_call">Start a video call</string>
|
||||
<!-- Accessibility description for the voice call button -->
|
||||
<string name="CallLogAdapter__start_a_voice_call">Start a voice call</string>
|
||||
<!-- Notice on call log when no missed calls are available, centered on display -->
|
||||
<string name="CallLogAdapter__no_missed_calls">No missed calls</string>
|
||||
|
||||
<!-- Call Log context menu -->
|
||||
<!-- Displayed as a context menu item to start a video call -->
|
||||
|
||||
Reference in New Issue
Block a user