CommandAdapter.java

 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}