mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
adapt basic search functions
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
*/
|
||||
package org.thoughtcrime.securesms;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
@@ -32,7 +31,6 @@ import com.google.zxing.integration.android.IntentIntegrator;
|
||||
import com.google.zxing.integration.android.IntentResult;
|
||||
|
||||
import org.thoughtcrime.securesms.components.SearchToolbar;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.qr.QrScanHandler;
|
||||
import org.thoughtcrime.securesms.search.SearchFragment;
|
||||
import org.thoughtcrime.securesms.util.DynamicLanguage;
|
||||
|
||||
@@ -182,7 +182,7 @@ public class ConversationListItem extends RelativeLayout
|
||||
groupIndicator.setColorFilter(color);
|
||||
}
|
||||
|
||||
public void bind(@NonNull Recipient contact,
|
||||
public void bind(@NonNull DcContact contact,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@NonNull Locale locale,
|
||||
@Nullable String highlightSubstring)
|
||||
@@ -203,7 +203,7 @@ public class ConversationListItem extends RelativeLayout
|
||||
contactPhotoImage.setAvatar(glideRequests, recipient, true);
|
||||
}
|
||||
|
||||
public void bind(@NonNull MessageResult messageResult,
|
||||
public void bind(@NonNull DcMsg messageResult,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@NonNull Locale locale,
|
||||
@Nullable String highlightSubstring)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.thoughtcrime.securesms.search;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
@@ -8,10 +9,15 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.b44t.messenger.DcChat;
|
||||
import com.b44t.messenger.DcContact;
|
||||
import com.b44t.messenger.DcLot;
|
||||
import com.b44t.messenger.DcMsg;
|
||||
|
||||
import org.thoughtcrime.securesms.ConversationListItem;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.connect.ApplicationDcContext;
|
||||
import org.thoughtcrime.securesms.connect.DcHelper;
|
||||
import org.thoughtcrime.securesms.database.model.ThreadRecord;
|
||||
import org.thoughtcrime.securesms.mms.GlideRequests;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
@@ -36,13 +42,17 @@ class SearchListAdapter extends RecyclerView.Adapter<SearchListAdapter.Search
|
||||
@NonNull
|
||||
private SearchResult searchResult = SearchResult.EMPTY;
|
||||
|
||||
SearchListAdapter(@NonNull GlideRequests glideRequests,
|
||||
ApplicationDcContext dcContext;
|
||||
|
||||
SearchListAdapter(Context context,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@NonNull EventListener eventListener,
|
||||
@NonNull Locale locale)
|
||||
{
|
||||
this.glideRequests = glideRequests;
|
||||
this.eventListener = eventListener;
|
||||
this.locale = locale;
|
||||
this.dcContext = DcHelper.getContext(context);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -54,21 +64,21 @@ class SearchListAdapter extends RecyclerView.Adapter<SearchListAdapter.Search
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull SearchResultViewHolder holder, int position) {
|
||||
ThreadRecord conversationResult = getConversationResult(position);
|
||||
DcChat conversationResult = getConversationResult(position);
|
||||
|
||||
if (conversationResult != null) {
|
||||
holder.bind(conversationResult, 0, new DcLot(0), glideRequests, eventListener, locale, searchResult.getQuery());
|
||||
return;
|
||||
}
|
||||
|
||||
Recipient contactResult = getContactResult(position);
|
||||
DcContact contactResult = getContactResult(position);
|
||||
|
||||
if (contactResult != null) {
|
||||
holder.bind(contactResult, glideRequests, eventListener, locale, searchResult.getQuery());
|
||||
return;
|
||||
}
|
||||
|
||||
MessageResult messageResult = getMessageResult(position);
|
||||
DcMsg messageResult = getMessageResult(position);
|
||||
|
||||
if (messageResult != null) {
|
||||
holder.bind(messageResult, glideRequests, eventListener, locale, searchResult.getQuery());
|
||||
@@ -113,41 +123,41 @@ class SearchListAdapter extends RecyclerView.Adapter<SearchListAdapter.Search
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private ThreadRecord getConversationResult(int position) {
|
||||
if (position < searchResult.getConversations().size()) {
|
||||
return searchResult.getConversations().get(position);
|
||||
private DcChat getConversationResult(int position) {
|
||||
if (position < searchResult.getConversations().getCnt()) {
|
||||
return dcContext.getChat(searchResult.getConversations().getChatId(position));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private Recipient getContactResult(int position) {
|
||||
private DcContact getContactResult(int position) {
|
||||
if (position >= getFirstContactIndex() && position < getFirstMessageIndex()) {
|
||||
return searchResult.getContacts().get(position - getFirstContactIndex());
|
||||
return dcContext.getContact(searchResult.getContacts()[position - getFirstContactIndex()]);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private MessageResult getMessageResult(int position) {
|
||||
private DcMsg getMessageResult(int position) {
|
||||
if (position >= getFirstMessageIndex() && position < searchResult.size()) {
|
||||
return searchResult.getMessages().get(position - getFirstMessageIndex());
|
||||
return dcContext.getMsg(searchResult.getMessages()[position - getFirstMessageIndex()]);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private int getFirstContactIndex() {
|
||||
return searchResult.getConversations().size();
|
||||
return searchResult.getConversations().getCnt();
|
||||
}
|
||||
|
||||
private int getFirstMessageIndex() {
|
||||
return getFirstContactIndex() + searchResult.getContacts().size();
|
||||
return getFirstContactIndex() + searchResult.getContacts().length;
|
||||
}
|
||||
|
||||
public interface EventListener {
|
||||
void onConversationClicked(@NonNull ThreadRecord threadRecord);
|
||||
void onContactClicked(@NonNull Recipient contact);
|
||||
void onMessageClicked(@NonNull MessageResult message);
|
||||
void onConversationClicked(@NonNull DcChat chat);
|
||||
void onContactClicked(@NonNull DcContact contact);
|
||||
void onMessageClicked(@NonNull DcMsg message);
|
||||
}
|
||||
|
||||
static class SearchResultViewHolder extends RecyclerView.ViewHolder {
|
||||
@@ -159,7 +169,7 @@ class SearchListAdapter extends RecyclerView.Adapter<SearchListAdapter.Search
|
||||
root = (ConversationListItem) itemView;
|
||||
}
|
||||
|
||||
void bind(@NonNull ThreadRecord conversationResult,
|
||||
void bind(@NonNull DcChat conversationResult,
|
||||
int msgId,
|
||||
@NonNull DcLot summary,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@@ -171,7 +181,7 @@ class SearchListAdapter extends RecyclerView.Adapter<SearchListAdapter.Search
|
||||
root.setOnClickListener(view -> eventListener.onConversationClicked(conversationResult));
|
||||
}
|
||||
|
||||
void bind(@NonNull Recipient contactResult,
|
||||
void bind(@NonNull DcContact contactResult,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@NonNull EventListener eventListener,
|
||||
@NonNull Locale locale,
|
||||
@@ -181,7 +191,7 @@ class SearchListAdapter extends RecyclerView.Adapter<SearchListAdapter.Search
|
||||
root.setOnClickListener(view -> eventListener.onContactClicked(contactResult));
|
||||
}
|
||||
|
||||
void bind(@NonNull MessageResult messageResult,
|
||||
void bind(@NonNull DcMsg messageResult,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@NonNull EventListener eventListener,
|
||||
@NonNull Locale locale,
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package org.thoughtcrime.securesms.search;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.DatabaseUtils;
|
||||
@@ -19,7 +18,6 @@ import org.thoughtcrime.securesms.database.MmsSmsColumns;
|
||||
import org.thoughtcrime.securesms.database.SearchDatabase;
|
||||
import org.thoughtcrime.securesms.database.ThreadDatabase;
|
||||
import org.thoughtcrime.securesms.database.model.ThreadRecord;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.search.model.MessageResult;
|
||||
import org.thoughtcrime.securesms.search.model.SearchResult;
|
||||
|
||||
@@ -4,6 +4,8 @@ import android.database.ContentObserver;
|
||||
import android.database.DataSetObserver;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import com.b44t.messenger.DcChatlist;
|
||||
|
||||
import org.thoughtcrime.securesms.database.CursorList;
|
||||
import org.thoughtcrime.securesms.database.model.ThreadRecord;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
@@ -16,17 +18,17 @@ import java.util.List;
|
||||
*/
|
||||
public class SearchResult {
|
||||
|
||||
public static final SearchResult EMPTY = new SearchResult("", CursorList.emptyList(), CursorList.emptyList(), CursorList.emptyList());
|
||||
public static final SearchResult EMPTY = new SearchResult("", new int[]{}, new DcChatlist(0), new int[]{});
|
||||
|
||||
private final String query;
|
||||
private final CursorList<Recipient> contacts;
|
||||
private final CursorList<ThreadRecord> conversations;
|
||||
private final CursorList<MessageResult> messages;
|
||||
private final String query;
|
||||
private final int[] contacts;
|
||||
private final DcChatlist conversations;
|
||||
private final int[] messages;
|
||||
|
||||
public SearchResult(@NonNull String query,
|
||||
@NonNull CursorList<Recipient> contacts,
|
||||
@NonNull CursorList<ThreadRecord> conversations,
|
||||
@NonNull CursorList<MessageResult> messages)
|
||||
public SearchResult(@NonNull String query,
|
||||
@NonNull int[] contacts,
|
||||
@NonNull DcChatlist conversations,
|
||||
@NonNull int[] messages)
|
||||
{
|
||||
this.query = query;
|
||||
this.contacts = contacts;
|
||||
@@ -34,15 +36,15 @@ public class SearchResult {
|
||||
this.messages = messages;
|
||||
}
|
||||
|
||||
public List<Recipient> getContacts() {
|
||||
public int[] getContacts() {
|
||||
return contacts;
|
||||
}
|
||||
|
||||
public List<ThreadRecord> getConversations() {
|
||||
public DcChatlist getConversations() {
|
||||
return conversations;
|
||||
}
|
||||
|
||||
public List<MessageResult> getMessages() {
|
||||
public int[] getMessages() {
|
||||
return messages;
|
||||
}
|
||||
|
||||
@@ -51,28 +53,10 @@ public class SearchResult {
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return contacts.size() + conversations.size() + messages.size();
|
||||
return contacts.length + conversations.getCnt() + messages.length;
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return size() == 0;
|
||||
}
|
||||
|
||||
public void registerContentObserver(@NonNull ContentObserver observer) {
|
||||
contacts.registerContentObserver(observer);
|
||||
conversations.registerContentObserver(observer);
|
||||
messages.registerContentObserver(observer);
|
||||
}
|
||||
|
||||
public void unregisterContentObserver(@NonNull ContentObserver observer) {
|
||||
contacts.unregisterContentObserver(observer);
|
||||
conversations.unregisterContentObserver(observer);
|
||||
messages.unregisterContentObserver(observer);
|
||||
}
|
||||
|
||||
public void close() {
|
||||
contacts.close();
|
||||
conversations.close();
|
||||
messages.close();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user