1package eu.siacs.conversations.ui.adapter;
2
3import android.view.LayoutInflater;
4import android.view.View;
5import android.view.ViewGroup;
6import android.widget.ArrayAdapter;
7
8import androidx.annotation.NonNull;
9import androidx.databinding.DataBindingUtil;
10
11import eu.siacs.conversations.R;
12import eu.siacs.conversations.databinding.CommandRowBinding;
13import eu.siacs.conversations.entities.Conversation;
14import eu.siacs.conversations.ui.ConversationsActivity;
15import eu.siacs.conversations.ui.XmppActivity;
16import eu.siacs.conversations.xml.Element;
17
18public class CommandAdapter extends ArrayAdapter<CommandAdapter.Command> {
19 public CommandAdapter(XmppActivity activity) {
20 super(activity, 0);
21 }
22
23 @Override
24 public View getView(int position, View view, @NonNull ViewGroup parent) {
25 CommandRowBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.command_row, parent, false);
26 binding.command.setText(getItem(position).getName());
27 return binding.getRoot();
28 }
29
30 public interface Command {
31 public String getName();
32 public void start(final ConversationsActivity activity, final Conversation conversation);
33 }
34
35 public static class Command0050 implements Command {
36 public final Element el;
37 public Command0050(Element el) { this.el = el; }
38
39 public String getName() {
40 return el.getAttribute("name");
41 }
42
43 public void start(final ConversationsActivity activity, final Conversation conversation) {
44 activity.startCommand(conversation.getAccount(), el.getAttributeAsJid("jid"), el.getAttribute("node"));
45 }
46 }
47
48 public static class MucConfig implements Command {
49 public MucConfig() { }
50
51 public String getName() {
52 return "⚙️ Configure Channel";
53 }
54
55 public void start(final ConversationsActivity activity, final Conversation conversation) {
56 conversation.startMucConfig(activity.xmppConnectionService);
57 }
58 }
59}