mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
make onContextItemSelected() being called
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package org.thoughtcrime.securesms.accounts;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -20,6 +21,7 @@ import org.thoughtcrime.securesms.mms.GlideRequests;
|
||||
|
||||
public class AccountSelectionListAdapter extends RecyclerView.Adapter
|
||||
{
|
||||
private final @NonNull AccountSelectionListFragment fragment;
|
||||
private final @NonNull Context context;
|
||||
private final @NonNull DcAccounts accounts;
|
||||
private @NonNull int[] accountList = new int[0];
|
||||
@@ -39,7 +41,7 @@ public class AccountSelectionListAdapter extends RecyclerView.Adapter
|
||||
super(itemView);
|
||||
}
|
||||
|
||||
public abstract void bind(@NonNull GlideRequests glideRequests, int accountId, DcContact self, String name, String addr, int unreadCount, boolean selected, boolean isMuted);
|
||||
public abstract void bind(@NonNull GlideRequests glideRequests, int accountId, DcContact self, String name, String addr, int unreadCount, boolean selected, boolean isMuted, AccountSelectionListFragment fragment);
|
||||
public abstract void unbind(@NonNull GlideRequests glideRequests);
|
||||
}
|
||||
|
||||
@@ -59,8 +61,8 @@ public class AccountSelectionListAdapter extends RecyclerView.Adapter
|
||||
return (AccountSelectionListItem) itemView;
|
||||
}
|
||||
|
||||
public void bind(@NonNull GlideRequests glideRequests, int accountId, DcContact self, String name, String addr, int unreadCount, boolean selected, boolean isMuted) {
|
||||
getView().bind(glideRequests, accountId, self, name, addr, unreadCount, selected, isMuted);
|
||||
public void bind(@NonNull GlideRequests glideRequests, int accountId, DcContact self, String name, String addr, int unreadCount, boolean selected, boolean isMuted, AccountSelectionListFragment fragment) {
|
||||
getView().bind(glideRequests, accountId, self, name, addr, unreadCount, selected, isMuted, fragment);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,12 +71,13 @@ public class AccountSelectionListAdapter extends RecyclerView.Adapter
|
||||
}
|
||||
}
|
||||
|
||||
public AccountSelectionListAdapter(@NonNull Context context,
|
||||
public AccountSelectionListAdapter(@NonNull AccountSelectionListFragment fragment,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@Nullable ItemClickListener clickListener)
|
||||
{
|
||||
super();
|
||||
this.context = context;
|
||||
this.fragment = fragment;
|
||||
this.context = fragment.getActivity();
|
||||
this.accounts = DcHelper.getAccounts(context);
|
||||
this.li = LayoutInflater.from(context);
|
||||
this.glideRequests = glideRequests;
|
||||
@@ -111,7 +114,7 @@ public class AccountSelectionListAdapter extends RecyclerView.Adapter
|
||||
|
||||
ViewHolder holder = (ViewHolder) viewHolder;
|
||||
holder.unbind(glideRequests);
|
||||
holder.bind(glideRequests, id, dcContact, name, addr, unreadCount, id == selectedAccountId, dcContext.isMuted());
|
||||
holder.bind(glideRequests, id, dcContact, name, addr, unreadCount, id == selectedAccountId, dcContext.isMuted(), fragment);
|
||||
}
|
||||
|
||||
public interface ItemClickListener {
|
||||
|
||||
+12
-2
@@ -34,11 +34,10 @@ public class AccountSelectionListFragment extends DialogFragment
|
||||
@Override
|
||||
public void onActivityCreated(Bundle icicle) {
|
||||
super.onActivityCreated(icicle);
|
||||
AccountSelectionListAdapter adapter = new AccountSelectionListAdapter(getActivity(),
|
||||
AccountSelectionListAdapter adapter = new AccountSelectionListAdapter(this,
|
||||
GlideApp.with(getActivity()),
|
||||
new ListClickListener());
|
||||
recyclerView.setAdapter(adapter);
|
||||
registerForContextMenu(recyclerView);
|
||||
|
||||
DcAccounts accounts = DcHelper.getAccounts(getActivity());
|
||||
int[] accountIds = accounts.getAll();
|
||||
@@ -74,6 +73,17 @@ public class AccountSelectionListFragment extends DialogFragment
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
|
||||
super.onCreateContextMenu(menu, v, menuInfo);
|
||||
requireActivity().getMenuInflater().inflate(R.menu.account_item_context, menu);
|
||||
|
||||
// hack to make onContextItemSelected() work with DialogFragment,
|
||||
// see https://stackoverflow.com/questions/15929026/oncontextitemselected-does-not-get-called-in-a-dialogfragment
|
||||
MenuItem.OnMenuItemClickListener listener = item -> {
|
||||
onContextItemSelected(item);
|
||||
return true;
|
||||
};
|
||||
for (int i = 0, n = menu.size(); i < n; i++) {
|
||||
menu.getItem(i).setOnMenuItemClickListener(listener);
|
||||
}
|
||||
// /hack
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.thoughtcrime.securesms.accounts;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Typeface;
|
||||
@@ -55,7 +56,7 @@ public class AccountSelectionListItem extends LinearLayout {
|
||||
ViewUtil.setTextViewGravityStart(this.nameView, getContext());
|
||||
}
|
||||
|
||||
public void bind(@NonNull GlideRequests glideRequests, int accountId, DcContact self, String name, String addr, int unreadCount, boolean selected, boolean isMuted) {
|
||||
public void bind(@NonNull GlideRequests glideRequests, int accountId, DcContact self, String name, String addr, int unreadCount, boolean selected, boolean isMuted, AccountSelectionListFragment fragment) {
|
||||
this.accountId = accountId;
|
||||
|
||||
Recipient recipient;
|
||||
@@ -80,6 +81,8 @@ public class AccountSelectionListItem extends LinearLayout {
|
||||
|
||||
updateUnreadIndicator(unreadCount, isMuted);
|
||||
setText(name, addr);
|
||||
|
||||
fragment.registerForContextMenu(this);
|
||||
}
|
||||
|
||||
public void unbind(GlideRequests glideRequests) {
|
||||
|
||||
Reference in New Issue
Block a user